package org.polyforms.repository.strategy;

import java.lang.reflect.Method;
import java.util.List;

import org.polyforms.repository.executor.NameBasedExecutor;

/**
 * Strategy of resolving name of named query for specific method.
 * 
 * @author Kuisong Tong
 * @since 1.0
 */
public interface QueryNamingStrategy {
    /**
     * Resolve names of named query for specific method.
     * 
     * @param method to be executed by Executor
     * @param executor to execute specified method
     * 
     * @return a list of name which might be used as query name
     */
    List<String> getQueryName(Method method, NameBasedExecutor executor);
}
